iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0

沒錯今天又是金流payment的額外擴充,
要講的是log紀錄,一樣先上結構

Schema::create('payment', function (Blueprint $table) {
    $table->string('id', 30)->comment('同訂單id');
    $table->string('payment_id', 30)->comment('金流單id');
    $table->string('type', 20)->comment('付款類型'); //credit, atm
    $table->string('status', 30)->default('unpaid')->comment('金流狀態');
    $table->dateTime('expired_at')->nullable()->comment('付款截止時間');
    $table->dateTime('paid_at')->nullable()->comment('付款時間');
    $table->text('info')->nullable(); // 付款資訊物件(ATM帳號/超商代碼/超商條碼)
    $table->float('amount')->default(0); // 金額
    $table->float('fee')->default(0); // 手續費
    $table->primary(['id']);
});

//新增金流log table
Schema::create('payment_log', function (Blueprint $table) {
    $table->string('id', 30);
    $table->string('order_id', 30);
    $table->string('payment_id', 100)->nullable()->comment('金流單id');
    $table->string('service_order_id', 100)->nullable()->comment('第三方金流單id');
    $table->string('status', 30)->comment('金流狀態');
    $table->text('response')->nullable()->comment('金流方回傳內容');
    $table->timestamps();
    $table->primary(['id']);
    $table->index(['payment_id']);
});

這邊我們新增了table payment_log,因為金流的溝通可能會有很多次來往,
因此需要紀錄下每次接收到的資訊,不管在查詢還是bebug都很方便,
這邊注意一下除了本來的payment_id之外,還有特別紀錄order_id,
主要是因為payment_id為了要符合重複付款的部份可能會換,
所以要有order_id方便我們filter出該筆訂單的全部金流紀錄,
其他的status、response就是該資料對應的狀態以及回傳內容,
至於第三方金流單號(永豐金是TSNo)service_order_id算是比較非必要,
屬於個人喜好的欄位,各位也可自行新增刪除覺得有需要或者沒必要的欄位。

有了金流、金流紀錄我們訂單交易的部份快到尾聲了,
剩下還有一些狀態卡點補充,以及最後的常用案例,
good bye.


上一篇
Day21 訂單金流 -- 獨立資料
下一篇
Day23 訂單金流 -- 狀態異動
系列文
掌握訂單與線上金流的剪不斷理還亂30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言